/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.web.ui.common.global;

import com.web.ui.common.component.InternalFrame;
import com.web.ui.common.component.TabButton;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;


/**
 *
 * @author Administrator
 */
public class APPParameters {

    /**
     * 内部窗口集合
     */
    private static Map<Integer, InternalFrame> innerFrames = new HashMap<Integer, InternalFrame>();

    /**
     * Tab按钮集合
     */
    private static Map<Integer, TabButton> innerFrameTabButtons = new HashMap<Integer, TabButton>();

    /**
     * 当前系统打开过的内部窗口的个数
     * 用于给窗口设置唯一的名字
     */
    private static int innerFrameSequence = 0;

    /**
     * 内部窗口的激活顺序列表
     * 当点击Tab按钮时，需要将其对应的内部窗口设为第一项，即活动窗口
     * 当关闭一个内部窗口时，需要将其从顺序列表中移除，并将链表中的第一个内部窗口设为活动状态
     */
    private static LinkedList<Integer> windActiveOrderList = new LinkedList<Integer>();

    /**
     * @return the innerFrames
     */
    public static Map<Integer, InternalFrame> getInnerFrames() {
        return innerFrames;
    }

    /**
     * @return the innerFrameTabButtons
     */
    public static Map<Integer, TabButton> getInnerFrameTabButtons() {
        return innerFrameTabButtons;
    }
    
    /**
     * 取得当前活动的框架
     * <br>
     * 在树中节点有变化时，为了动态效果要用的这个方法
     * 
     * @return  InternalFrame
     * @author  李林
     * @version Ver 1.0 2009-4-24 新建
     * @since   PASIAM Ver 1.0
     */
    public static InternalFrame getCurrentInnerFrame() {

        // 取得当前所有的框架
        Collection internalFrameSet = innerFrames.values();

        // 定义当前活动的框架
        InternalFrame currentInternalFrame = null;
        InternalFrame internalFrame;
        Iterator iterator = internalFrameSet.iterator();

        // 取得当前活动的框架
        while(iterator.hasNext()){
            internalFrame = (InternalFrame) iterator.next();

            // 如果是活动的
            if(internalFrame.isSelected()){
                currentInternalFrame = internalFrame;
            }
        }

        return currentInternalFrame;
    }

    /**
     * 获得下一个窗口的标识
     * @param aInnerFrameSequence the innerFrameSequence to set
     */
    public static Integer nextInnerFrameSequence() {        
        return ++innerFrameSequence;
    }

    /**
     * @return the windActiveOrder
     */
    public static LinkedList<Integer> getWindActiveOrderList() {
        return windActiveOrderList;
    }

}
